Acquire images synchronously
In This Topic
VintaSoft Twain ActiveX allows to acquire images from the scanner synchronously (in a modal loop).
Here is to do list for acquiring images synchronously:
- Open TWAIN device manager.
- Select TWAIN device.
- Open TWAIN device.
- Set the scanning settings.
- Start the acquisition modal loop.
- Retrieve acquired images one by one while the Device_AcquireImageModal method returns True.
- Break loop if the Device_AcquireImageModal method returns False.
Example: Here is an example that shows how to acquire images in modal loop using scanner driver user interface and save acquired images into multipage TIFF file:
Private VSTwain1 As New VintaSoftTwain()
''' <summary>
''' Scans images synchronously.
''' </summary>
Public Sub ScanImages()
' specify name of scanning application
VSTwain1.DeviceManager_ApplicationProductName = "MyTwainApplication"
' open the device manager
If Not VSTwain1.DeviceManager_Open() Then
Console.WriteLine(VSTwain1.errorString)
Exit Sub
End If
' select device using standard device selection dialog
VSTwain1.DeviceManager_ShowDefaultDeviceSelectionDialog()
' open the device
If Not VSTwain1.Device_Open Then
Console.WriteLine(VSTwain1.errorString)
Exit Sub
End If
' specify that device UI must be shown
VSTwain1.Device_ShowUI = True
' specify that acquired image must be added to an existing TIFF file
VSTwain1.TiffEncoder_MultiPage = True
' run synchronous image acquisition
Dim acquireModalState1 As VSTwainLib.ACQUIREMODALSTATE = ACQUIREMODALSTATE.AcquireModalState_None
Do
acquireModalState1 = VSTwain1.Device_AcquireImageModal()
Select Case acquireModalState1
Case ACQUIREMODALSTATE.AcquireModalState_ImageAcquired
Console.WriteLine("Image is acquired.")
' save acquired image to TIFF file
If Not VSTwain1.AcquiredImages_Save(0, "test.tif") Then
Console.WriteLine(VSTwain1.errorString)
End If
' delete image from internal image buffer
VSTwain1.AcquiredImages_Clear()
Exit Select
Case ACQUIREMODALSTATE.AcquireModalState_ScanCompleted
Console.WriteLine("Scan is completed.")
Exit Select
Case ACQUIREMODALSTATE.AcquireModalState_ScanCanceled
Console.WriteLine("Scan is canceled.")
Exit Select
Case ACQUIREMODALSTATE.AcquireModalState_ScanFailed
Console.WriteLine(String.Format("Scan is failed: {0}.", VSTwain1.errorString))
Exit Select
End Select
Loop While acquireModalState1 <> ACQUIREMODALSTATE.AcquireModalState_None
End Sub